// 新增@AoUpdateable注解类
package com.gitee.l0km.aocache.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 缓存更新策略注解<p>
 * 该注解用于标记方法，在执行被注解方法前会调用指定的目标方法更新缓存
 * 
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AoUpdateable {
	/**
	 * 目标方法(Method)或构造方法(Constructor)所属的类，默认为注解所在方法或构造方法所属的类
	 */
	Class<?> targetClass() default Object.class;

	/**
	 * 要执行更新的目标切入点方法名
	 * <p>不能为空，必须与目标类中的方法名一致
	 */
	String methodName();

	/**
	 * 目标方法的参数类型数组
	 * <p>需与目标方法参数类型完全匹配，若目标方法无参数可省略
	 */
	Class<?>[] parameterTypes() default {};
}